//
// Created by Lantz on 2024/6/14.
//

/**
* 试用贪心算法求解下列问题：
 * 将正整数 n 分解为若干个互不相同的自然数之和，使这些自然数的乘积最大，写出该算法
 * eg:
 *  5 = 2 + 3
 *  6 = 2 + 4
 *  7 = 3 + 4
 *  11 = 2 + 4 + 5
 *  分解尽量从 2 开始分解
*/

#include <bits/stdc++.h>

using namespace std;

void apartNum(int num){

        int flag[100] = {0};
        int k = 2; // 从 2
        int i = 0;
        while (num >= k){ // 从 2 开始分解
            flag[i++] = k;
            num -= k;
            k++;
        }

//        if(num > 0){
//            if(num == flag[i-1]){
//                flag[i-1]++;
//                num--;
//            }
//        }
        for(int j = i-1; j >= 0 && num > 0; j--){
            flag[j]++;
            num--;
        }

        int result = 1;
        for(int j = 0; j < i; j++){
            result *= flag[j];
        }
        cout<<result<<endl;
}

int main(){

    int num;
    cout<<"Input a positive integer:"<<endl;
    cin>>num;
    apartNum(num);

    return 0;
}